/*EJERCICIO 1, EXAMEN DICIEMBRE 2013
JOSE MANUEL NAVARRO CONTI*/

/*El fichero ventaJuguetes2.txt contiene numeros enteros correspondientes a las ventas del barco pirata de playmobil, cada linea contiene 13 enteros, el primero corresponde al a��o de las ventas y los 12 restantes a las ventas de cada mes correspondientes a ese mismo a��o.Se pide:
- leer el fichero y almacenarlo en una matriz din��mica bidimensional, el primer numero de cada fila deber�� corresponder al a��o.
- calcular la media de un determinado mes, valor pedido al usuario
- que el programa reciba el nombre del archivo en la linea de ordenes.*/


#include<stdio.h>
#include<stdlib.h>


void imprime_matriz(int **matriz, int nFil, int nCol);
int ** reserva_matriz(int nFil, int nCol);
float calcula_media(int **matriz, int nFil, int nCol);


int main(int argc, char *argv[])
{
	if(argc!=2)
	{
		printf("\n����ERROR!! Uso del programa: %s fichero_texto\n\n", argv[0]);
	}
	else
	{
		FILE *fichero;
		char *nombre;
		int**matriz, nFil=20, nCol=13, i,j;
		int mes;
		nombre=argv[1];
		fichero=fopen(nombre, "r");
		if(fichero==NULL)
		{
			printf("\nError al abrir el fichero\n");
			exit(1);
		}
		matriz=reserva_matriz(nFil, nCol);
		for(i=0;i<nFil;i++)
		{
			for(j=0;j<nCol;j++)
			{
				fscanf(fichero,"%d ", &matriz[i][j]);
			}
		}
		fclose(fichero);
		imprime_matriz(matriz, nFil, nCol);
		free(matriz);
		printf("\nIndique el mes en el que desea calcular la media\n");
		scanf("%d", &mes);
		if(mes<=0 || mes>=13)
		{
			printf("\nN��mero de mes no v��lido, introduzca un n��mero entre 1 y 12\n");
		}
		else
		{
		
			printf("\nLa media del mes %d es %.2f unidades\n", mes, calcula_media(matriz, 20, mes)); 
		}
	
	}
return 0;
}
void imprime_matriz(int **matriz, int nFil, int nCol)
{
	int i,j;
	for(i=0;i<nFil;i++)
	{
		for(j=0;j<nCol;j++)
		{
			printf("%d ", matriz[i][j]);
		}
	printf("\n");
	}
}

int ** reserva_matriz(int nFil, int nCol)
{
	int **matriz,i;
	matriz=((int**)malloc(nFil*sizeof(int*)));
	if(matriz==NULL)
	{
	printf("\nError al reservar memoria para la matriz din��mica\n");
	exit(1);
	}
	for(i=0;i<nFil; i++)
	{
		matriz[i]=((int*)malloc(nCol*sizeof(int)));
	}
	return matriz;
}
float calcula_media(int **matriz, int nFil, int nCol)
{
	int i, suma=0;
	float media;
	
	for(i=0;i<nFil;i++)
	{
		suma=suma+matriz[i][nCol];
	
	
	}
	media=(suma)/20.00;
	
return media;
}
